CodeIgniter-এ Multiple File Uploading খুবই সহজ এবং কার্যকরী। এটি ইউজারদের একাধিক ফাইল একসাথে আপলোড করার সুবিধা দেয়। CodeIgniter এর বিল্ট-ইন ফাইল আপলোড লাইব্রেরি ব্যবহার করে এটি সহজে করা যায়।
ফাইল আপলোডের জন্য প্রয়োজনীয় ধাপ
ধাপ ১: ফর্ম তৈরি
আপনার ভিউ ফাইলে একটি ফাইল আপলোড ফর্ম তৈরি করুন। এটি HTML-এর multiple অ্যাট্রিবিউট ব্যবহার করে একাধিক ফাইল নির্বাচন করতে দেয়।
উদাহরণ:
<form action="<?= base_url('upload/multiple') ?>" method="post" enctype="multipart/form-data">
<label for="files">Choose multiple files:</label>
<input type="file" name="files[]" multiple>
<button type="submit">Upload</button>
</form>
ধাপ ২: রাউট কনফিগার করা
app/Config/Routes.php ফাইলে একটি নতুন রাউট যোগ করুন:
$routes->post('upload/multiple', 'UploadController::multiple');
ধাপ ৩: কন্ট্রোলার তৈরি
একটি কন্ট্রোলার তৈরি করুন (যেমন: UploadController.php) এবং ফাইল আপলোড লজিক যোগ করুন।
কন্ট্রোলার উদাহরণ:
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
class UploadController extends Controller
{
public function multiple()
{
$files = $this->request->getFiles(); // সমস্ত ফাইল রিট্রিভ
foreach ($files['files'] as $file) {
if ($file->isValid() && !$file->hasMoved()) {
// ফাইল আপলোড করা
$file->move(WRITEPATH . 'uploads', $file->getClientName());
}
}
return "Files have been uploaded successfully!";
}
}
ধাপ ৪: ফাইল সংরক্ষণের জন্য ডিরেক্টরি তৈরি
আপনার writable/uploads ফোল্ডার নিশ্চিত করুন এবং সেটি রাইটেবল করুন।
Linux-এ:
chmod -R 0777 writable/uploads
ফাইল আপলোড করার সময় ভ্যালিডেশন যোগ করা
আপলোড করার সময় ফাইলের ধরন বা সাইজ যাচাই করার জন্য ভ্যালিডেশন যোগ করতে পারেন।
ভ্যালিডেশন সহ কন্ট্রোলার উদাহরণ:
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
class UploadController extends Controller
{
public function multiple()
{
$files = $this->request->getFiles();
$uploadedFiles = [];
foreach ($files['files'] as $file) {
if ($file->isValid() && !$file->hasMoved()) {
// ফাইল ভ্যালিডেশন
if ($file->getSize() <= 2048000 && in_array($file->getExtension(), ['jpg', 'png', 'gif'])) {
$file->move(WRITEPATH . 'uploads', $file->getClientName());
$uploadedFiles[] = $file->getClientName();
}
}
}
if (count($uploadedFiles) > 0) {
return "Uploaded Files: " . implode(', ', $uploadedFiles);
} else {
return "No valid files to upload.";
}
}
}
ফাইল লিস্ট দেখানো
আপলোড হওয়া ফাইলগুলোর লিস্ট দেখাতে চাইলে, writable/uploads ডিরেক্টরি থেকে ফাইল লিস্ট রিট্রিভ করতে পারেন।
উদাহরণ:
public function listFiles()
{
$files = array_diff(scandir(WRITEPATH . 'uploads'), ['.', '..']);
return view('file_list', ['files' => $files]);
}
গুরুত্বপূর্ণ মেথড এবং প্রপার্টি
| মেথড/প্রপার্টি | কাজ |
|---|---|
$this->request->getFiles() | সমস্ত ফাইল রিট্রিভ করে। |
$file->isValid() | ফাইলটি বৈধ কিনা যাচাই করে। |
$file->hasMoved() | ফাইলটি ইতিমধ্যে মুভ করা হয়েছে কিনা যাচাই করে। |
$file->getClientName() | ফাইলের মূল নাম রিট্রিভ করে। |
$file->getExtension() | ফাইলের এক্সটেনশন রিট্রিভ করে। |
$file->getSize() | ফাইলের সাইজ (বাইটে) রিট্রিভ করে। |
$file->move($path, $name) | নির্দিষ্ট ডিরেক্টরিতে ফাইলটি সংরক্ষণ করে। |
Common Errors এবং সমাধান
Error: ফাইল আপলোড হচ্ছে না
- সমাধান: নিশ্চিত করুন যে
writable/uploadsফোল্ডার রাইটেবল।
Error: ফাইল সাইজ লিমিট এক্সসিডেড
- সমাধান: PHP এর
php.iniফাইলেupload_max_filesizeএবংpost_max_sizeবাড়ান।
upload_max_filesize = 5M
post_max_size = 10M
CodeIgniter-এ Multiple File Uploading প্রক্রিয়াটি সহজ এবং কার্যকর। ভ্যালিডেশন এবং কাস্টমাইজেশনের মাধ্যমে এটি আরও নিরাপদ এবং ব্যবহারবান্ধব করা যায়। এই পদ্ধতি ব্যবহার করে আপনি সহজেই ইউজারের একাধিক ফাইল আপলোডের প্রয়োজনীয়তা পূরণ করতে পারবেন।
Read more